/*一些基础的js方法，基础的业务js方法在lib.js里*/
//日期格式化
Date.prototype.format = function(format) {
	var d = this, o = {
		"M+" : d.getMonth() + 1,
		"d+" : d.getDate(),
		"H+" : d.getHours(),
		"m+" : d.getMinutes(),
		"s+" : d.getSeconds(),
		w : [ "日", "一", "二", "三", "四", "五", "六" ][d.getDay()]
	};
	if (/(y+)/.test(format)) {
		format = format.replace(RegExp.$1, (d.getFullYear() + "")
				.substr(4 - RegExp.$1.length))
	}
	for ( var k in o) {
		if (new RegExp("(" + k + ")").test(format)) {
			format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
					: ("00" + o[k]).substr(("" + o[k]).length))
		}
	}
	return format
};

//数据格式化
/*整数类型自动加.000,小数类型自动截取.后面三位,所有数字都保留三位小数*/
var formatNumber = function(num){  
    num += '';  
   num = num.replace(/[^0-9|\.]/g, ''); //清除字符串中的非数字非.字符  
       
     if(/^0+/) //清除字符串开头的0  
         num = num.replace(/^0+/, '');  
    if(!/\./.test(num)) //为整数字符串在末尾添加.000  
      num += '.000';  
    if(/^\./.test(num)) //字符以.开头时,在开头添加0  
        num = '0' + num;  
    num += '000';        //在字符串末尾补零  
    num = num.match(/\d+\.\d{3}/)[0];  
    return num;
};

//判断是否为空
function isBlank(value) {
    return !value || !/\S/.test(value) ;
}

var Common = {
	ctxPath : "",
	version : "",
	log : function(info) {
		console.log(info);
	},
	alert : function(info, iconIndex) {
		parent.layer.msg(info, {
			icon : iconIndex
		});

	},
	info : function(info) {
		Common.alert(info, 0);
	},
	success : function(info) {
		Common.alert(info, 1);
	},
	fail : function(info) {
		Common.alert(info, 2);
	},
	error : function(info) {
		Common.openConfirm(info)
	},
	post : function(url, paras, next) {
		// 打开遮罩
		var index = layer.load(0);
		$.ajax({
			url : Common.ctxPath + url,
			type : "POST",
			data : paras,
			success : function(rsp) {
				// 关闭遮罩
				layer.close(index);
				if (rsp.code != 0) {
					Common.fail(rsp.msg ? rsp.msg : rsp.responseJSON.msg);

				} else {
					// 成功
					if (next != null) {
						next(rsp.data);
					} else {
						Common
								.success(rsp.msg ? rsp.msg
										: rsp.responseJSON.msg);
					}
				}

			},
			error : function(rsp) {
				// 关闭遮罩
				layer.close(index);
				Common.fail(rsp.msg ? rsp.msg : rsp.responseJSON.msg);
			}
		})

	},
	getOneFromTable : function(layuiTable, tableId) {
		var checkStatus = layuiTable.checkStatus(tableId), data = checkStatus.data;
		if (data.length == 0) {
			Common.info("请选中一条记录");
		} else if (data.length > 1) {
			Common.info("只能选中一条记录")
		} else {
			return data[0];
		}
	},
	getMoreDataFromTable : function(layuiTable, tableId) {
		var checkStatus = layuiTable.checkStatus(tableId), data = checkStatus.data;
		if (data.length == 0) {
			Common.info("请选中记录");
		} else {
			return data;
		}
	},
	openDlg : function(url, title) {
		var index = layer.open({
			type : 2,
			content : Common.ctxPath + url,
			title : title,
			maxmin : false
		});
		
		layer.full(index);
	},
	topOpenDlg : function(url, title) {
		var index = top.layer.open({
			type : 2,
			content : Common.ctxPath + url,
			title : title,
			area : [ '100%', '100%' ],
			maxmin : false
		});
		layer.full(index);
	},
	openConfirm : function(content, callback, callBackNo) {
		var index = layer.confirm(content, {
			btn : [ '确认', '取消' ]
		// 按钮
		}, function() {
			if (callback != null) {
				callback();
			}
			layer.close(index);
		}, function() {
			if (callBackNo != null) {
				callBackNo()
			}
			layer.close(index);
		});

	},
	openPrompt : function(title, defaultValue, callback) {
		layer.prompt({
			title : title,
			formType : 0,
			value : defaultValue
		}, function(value, index, elem) {
			layer.close(index);
			callback(value);
		});
	},
	concatBatchId : function(data, idField) {
		var ids = ""
		var name = idField == null ? "id" : idField;
		for (var i = 0; i < data.length; i++) {
			var item = data[i];
			ids = ids + item[name];
			if (i != data.length - 1) {
				ids = ids + ","
			}
		}
		return ids;
	},
	sessionTimeoutRegistry : function() {
		$.ajaxSetup({
			contentType : "application/x-www-form-urlencoded;charset=utf-8",
			complete : function(XMLHttpRequest, textStatus) {
				// 通过XMLHttpRequest取得响应头，sessionstatus，
				var sessionstatus = XMLHttpRequest
						.getResponseHeader("sessionstatus");
				if (sessionstatus == "timeout") {
					// 如果超时就处理 ，指定要跳转的页面
					window.location = Common.ctxPath + "/global/sessionError";
				}
			}
		});
	},
	initValidator : function(formId, fields) {
		$('#' + formId).bootstrapValidator({
			feedbackIcons : {
				valid : 'glyphicon glyphicon-ok',
				invalid : 'glyphicon glyphicon-remove',
				validating : 'glyphicon glyphicon-refresh'
			},
			fields : fields,
			live : 'enabled',
			message : '该字段不能为空'
		});
	},
	getDate : function(date, pattern) {
		if (date == null || date == '') {
			return "";
		} else {
			if (pattern) {
				return new Date(date).format(pattern);
			} else {
				return date.substring(0, 10);
			}

		}
	}

};

// JQuery方法定制
(function($) {

	$.ajaxSetup({
		type : 'POST',
		async : true,
		dataType : "json",
		timeout : 30000
	});

	/**
	 * 获取form表单数据
	 */
	$.fn.getFormData = function(isValid) {
		var fieldElem = $(this).find('input,select,textarea'); // 获取所有表单域
		var data = {};
		layui.each(fieldElem, function(index, item) {
			if (!item.name)
				return;
			if (/^checkbox|radio$/.test(item.type) && !item.checked)
				return;
			var value = item.value;
			if (item.type == "checkbox") {// 如果多选
				if (data[item.name]) {
					value = data[item.name] + "," + value;
				}
			}
			if (isValid) {
				// 如果为true,只需要处理有数据的值
				if (!$.isEmpty(value)) {
					data[item.name] = value;
				}
			} else {
				data[item.name] = value;
			}
		});
		return data;
	};

	$.fn.serializeJson = function() {
		var serializeObj = {};
		var array = this.serializeArray();
		var str = this.serialize();
		$(array).each(
				function() {
					if (serializeObj[this.name]) {
						if ($.isArray(serializeObj[this.name])) {
							serializeObj[this.name].push(this.value);
						} else {
							serializeObj[this.name] = [
									serializeObj[this.name], this.value ];
						}
					} else {
						serializeObj[this.name] = this.value;
					}
				});
		return serializeObj;
	};

	$.extend({
		// 非空判断
		isEmpty : function(value) {
			if (value === null || value == undefined || value === '') {
				return true;
			}
			return false;
		},
		// 获取对象指
		result : function(object, path, defaultValue) {
			var value = "";
			if (!$.isEmpty(object) && $.isObject(object) && !$.isEmpty(path)) {
				var paths = path.split('.');
				var length = paths.length;
				$.each(paths, function(i, v) {
					object = object[v];
					if (length - 1 == i) {
						value = object;
					}
					if (!$.isObject(object)) {
						return false;
					}
				})

			}

			if ($.isEmpty(value) && !$.isEmpty(defaultValue)) {
				value = defaultValue;
			}
			return value;
		},
		// 判断是否obj对象
		isObject : function(value) {
			var type = typeof value;
			return value != null && (type == 'object' || type == 'function');
		},
		// 是否以某个字符开头
		startsWith : function(value, target) {
			return value.indexOf(target) == 0;
		},
		// 设置sessionStorage
		setSessionStorage : function(key, data) {
			sessionStorage.setItem(key, data);
		},
		// 获取sessionStorage
		getSessionStorage : function(key) {
			return sessionStorage.getItem(key) == null ? "" : sessionStorage
					.getItem(key);
		},
		// 删除sessionStorage
		removeSessionStorage : function(key) {
			sessionStorage.removeItem(key);
		},
		// 清除sessionStorage
		clearSessionStorage : function() {
			sessionStorage.clear();
		},
		uuid : function() {
			return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,
					function(c) {
						var r = Math.random() * 16 | 0, v = c == 'x' ? r
								: (r & 0x3 | 0x8);
						return v.toString(16);
					});
		}
	});

}(jQuery));
